//
//  FYStatusListViewModel.swift
//  Mircore
//
//  Created by apple on 16/8/12.
//  Copyright © 2016年 飞羽. All rights reserved.
//

import UIKit


//获取微博数据的ViewModel  对应的视图是首页的TableView
class FYStatusListViewModel: NSObject {

     //微博数据源
    
    lazy  var  statusList:[FYStatusViewModel] = [FYStatusViewModel]()
    
    
    //加载微博数据
    
    func  loadData(isPullup: Bool, callBlack: (isSuccesss: Bool, message: String) -> ())  {
    
        
        //上拉加载需要的参数
        
        var  maxId: Int64 = 0
        
        //下拉刷新需要的参数
        
        var  sinceId: Int64  = 0
        
        if  isPullup {
        
            //上拉加载获取数据源里面最后一条微博数据的ID
            
            maxId = statusList.last?.status?.id  ?? 0
            
            if maxId > 0 {
            
                //避免重复数据
                
                maxId -= 1
            
            }
        
        }else  {
        
        //下拉刷新获取数据源里面的第一天微博的ID
            
            sinceId = statusList.first?.status?.id  ?? 0
        
        }
        
        //默认显示的tip文字
        
        var  result  = "没有加载到最新的微博数据"
        
        CZNetworkTools.sharedTools.requestStatuses(FYUserAccountViewModel.sharedUserAccount.accessToken!, maxId: maxId, sinceId: sinceId) { (response, error) in
            
            if  error  != nil  {
                
                callBlack(isSuccesss: false, message: result)
                return
            }
            
            //代码执行到此  表示网络请求成功
            
            guard  let  dic = response as? [String: AnyObject]  else  {
                
                callBlack(isSuccesss: false, message: result)
                return
            }
            
            //字典格式正确
            
            guard let  dicArray  = dic["statuses"]   as?  [[String: AnyObject]]  else  {
                
                callBlack(isSuccesss: false, message: result)
                return
            }
            
            
            var  tempArray  = [FYStatusViewModel] ()
            
            for  value  in  dicArray {
                
                //字典转模型
                
                let  status  = FYStatus(dic: value)
                
                //viewmodel
                
                let  staustViewModel = FYStatusViewModel(status: status)
                
                tempArray.append(staustViewModel)
            }
            
            //设置数据源
            
//            self.statusList  = tempArray
            
            if  isPullup  {
            
              //上拉加载追加服务端返回的数据
                
                self.statusList.appendContentsOf(tempArray)
            }else  {
            
                //下拉刷新服务端返回的数据插入到第一个元素
                
                self.statusList.insertContentsOf(tempArray, at: 0)
            
            }
            
            
            if  tempArray.count > 0 {
            
                
                result  = "加载了\(tempArray.count)条数据"
            }
            callBlack(isSuccesss: true, message: result)
        }
        
     }
    
}
